	.arch armv8-a
	.arch_extension crc
	.arm
	.data
	.global test_block
	.align 4
	.size test_block, 256
test_block:
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.global test_dct
	.align 4
	.size test_dct, 256
test_dct:
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.global test_idct
	.align 4
	.size test_idct, 256
test_idct:
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.section .rodata
	.global MAX_DIM_X
	.align 4
	.size MAX_DIM_X, 4
MAX_DIM_X:
	.word 8
	.global MAX_DIM_Y
	.align 4
	.size MAX_DIM_Y, 4
MAX_DIM_Y:
	.word 8
	.global PI
	.align 4
	.size PI, 4
PI:
	.word 1078530011
	.global TWO_PI
	.align 4
	.size TWO_PI, 4
TWO_PI:
	.word 1086918619
	.global EPSILON
	.align 4
	.size EPSILON, 4
EPSILON:
	.word 897988541
	.text
	.global my_fabs
	.type my_fabs , %function
my_fabs:
	push {r4, r5, r6, r10, fp, lr}
	mov fp, sp
	sub sp, sp, #4
.L348:
	str r0, [fp, #-4]
	ldr r10, [fp, #-4]
	cmp r10, #0
	cmp r10, #0
	movgt r4, #1
	movlt r4, #0
	bgt .L350
	b .L358
.L350:
	ldr r4, [fp, #-4]
	mov r0, r4
	add sp, sp, #4
	pop {r4, r5, r6, r10, fp, lr}
	bx lr
	b .L351
.L351:
	ldr r4, [fp, #-4]
	ldr r5, =0
	sub r6, r5, r4
	mov r0, r6
	add sp, sp, #4
	pop {r4, r5, r6, r10, fp, lr}
	bx lr
.L354:
	b .L353
.L358:
	b .L351

	.global p
	.type p , %function
p:
	push {r4, r5, r6, r8, r9, r10, fp, lr}
	mov fp, sp
	sub sp, sp, #4
.L359:
	str r0, [fp, #-4]
	ldr r10, [fp, #-4]
	ldr r9, =3
	mul r8, r9, r10
	ldr r4, [fp, #-4]
	ldr r5, =4
	mul r6, r5, r4
	ldr r4, [fp, #-4]
	mul r5, r6, r4
	ldr r4, [fp, #-4]
	mul r6, r5, r4
	sub r4, r8, r6
	mov r0, r4
	add sp, sp, #4
	pop {r4, r5, r6, r8, r9, r10, fp, lr}
	bx lr

	.global my_sin_impl
	.type my_sin_impl , %function
my_sin_impl:
	push {r4, r5, r6, r10, fp, lr}
	mov fp, sp
	sub sp, sp, #4
.L361:
	str r0, [fp, #-4]
	ldr r10, [fp, #-4]
	cmp r10, #0
	mov r0, r10
	bl my_fabs
	mov r4, r0
	cmp r4, #0
	ldr r5, addr_EPSILON0
	ldr r6, [r5]
	cmp r6, #0
	cmp r4, r6
	movle r4, #1
	movge r4, #0
	ble .L363
	b .L379
.L363:
	ldr r4, [fp, #-4]
	mov r0, r4
	add sp, sp, #4
	pop {r4, r5, r6, r10, fp, lr}
	bx lr
	b .L364
.L364:
	ldr r4, [fp, #-4]
	ldr r5, =3
	sdiv r6, r4, r5
	mov r0, r6
	bl my_sin_impl
	mov r4, r0
	mov r0, r4
	bl p
	mov r4, r0
	mov r0, r4
	add sp, sp, #4
	pop {r4, r5, r6, r10, fp, lr}
	bx lr
.L367:
	b .L366
.L371:
	b .L370
.L375:
	b .L374
.L379:
	b .L364

	.global my_sin
	.type my_sin , %function
my_sin:
	push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	mov fp, sp
	sub sp, sp, #8
.L380:
	str r0, [fp, #-8]
	ldr r10, [fp, #-8]
	cmp r10, #0
	ldr r9, addr_TWO_PI0
	ldr r8, [r9]
	cmp r8, #0
	cmp r10, r8
	movgt r4, #1
	movlt r4, #0
	bgt .L382
	b .L395
.L382:
	ldr r4, [fp, #-8]
	ldr r5, addr_TWO_PI0
	ldr r6, [r5]
	sdiv r5, r4, r6
	str r5, [fp, #-4]
	ldr r4, [fp, #-8]
	ldr r5, [fp, #-4]
	ldr r6, addr_TWO_PI0
	ldr r7, [r6]
	mul r6, r5, r7
	sub r5, r4, r6
	str r5, [fp, #-8]
	b .L383
.L383:
	ldr r4, [fp, #-8]
	cmp r4, #0
	ldr r5, addr_PI0
	ldr r6, [r5]
	cmp r6, #0
	cmp r4, r6
	movgt r4, #1
	movlt r4, #0
	bgt .L412
	b .L424
.L384:
	ldr r4, [fp, #-8]
	cmp r4, #0
	ldr r5, addr_TWO_PI0
	ldr r6, [r5]
	cmp r6, #0
	ldr r5, =0
	sub r7, r5, r6
	cmp r7, #0
	cmp r4, r7
	movlt r4, #1
	movgt r4, #0
	blt .L382
	b .L410
.L387:
	b .L386
.L391:
	b .L390
.L395:
	b .L384
.L398:
	b .L397
.L402:
	b .L401
.L406:
	b .L405
.L410:
	b .L383
.L412:
	ldr r4, [fp, #-8]
	ldr r5, addr_TWO_PI0
	ldr r6, [r5]
	sub r5, r4, r6
	str r5, [fp, #-8]
	b .L413
.L413:
	ldr r4, [fp, #-8]
	cmp r4, #0
	ldr r5, addr_PI0
	ldr r6, [r5]
	cmp r6, #0
	ldr r5, =0
	sub r7, r5, r6
	cmp r7, #0
	cmp r4, r7
	movlt r4, #1
	movgt r4, #0
	blt .L425
	b .L441
.L416:
	b .L415
.L420:
	b .L419
.L424:
	b .L413
.L425:
	ldr r4, [fp, #-8]
	ldr r5, addr_TWO_PI0
	ldr r6, [r5]
	add r5, r4, r6
	str r5, [fp, #-8]
	b .L426
.L426:
	ldr r4, [fp, #-8]
	mov r0, r4
	bl my_sin_impl
	mov r4, r0
	mov r0, r4
	add sp, sp, #8
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L429:
	b .L428
.L433:
	b .L432
.L437:
	b .L436
.L441:
	b .L426

	.global my_cos
	.type my_cos , %function
my_cos:
	push {r4, r5, r8, r9, r10, fp, lr}
	mov fp, sp
	sub sp, sp, #4
.L442:
	str r0, [fp, #-4]
	ldr r10, [fp, #-4]
	ldr r9, addr_PI0
	ldr r8, [r9]
	ldr r4, =2
	sdiv r5, r8, r4
	add r4, r10, r5
	mov r0, r4
	bl my_sin
	mov r4, r0
	mov r0, r4
	add sp, sp, #4
	pop {r4, r5, r8, r9, r10, fp, lr}
	bx lr

	.global write_mat
	.type write_mat , %function
write_mat:
	push {r4, r5, r6, r7, r10, fp, lr}
	mov fp, sp
	sub sp, sp, #20
.L444:
	str r0, [fp, #-20]
	str r1, [fp, #-16]
	str r2, [fp, #-12]
	ldr r10, =0
	str r10, [fp, #-8]
	b .L449
.L449:
	ldr r4, [fp, #-8]
	cmp r4, #0
	ldr r5, [fp, #-16]
	cmp r5, #0
	cmp r4, r5
	movlt r4, #1
	movgt r4, #0
	blt .L450
	b .L462
.L450:
	ldr r4, [fp, #-20]
	ldr r5, [fp, #-8]
	mov r6, #4
	mul r7, r5, r6
	add r5, r4, r7
	ldr r4, [r5]
	mov r0, r4
	bl putfloat
	ldr r4, =1
	str r4, [fp, #-4]
	b .L466
.L451:
	mov r0, #10
	bl putch
	add sp, sp, #20
	pop {r4, r5, r6, r7, r10, fp, lr}
	bx lr
.L452:
	add sp, sp, #20
	pop {r4, r5, r6, r7, r10, fp, lr}
	bx lr
.L453:
	add sp, sp, #20
	pop {r4, r5, r6, r7, r10, fp, lr}
	bx lr
.L454:
	b .L453
.L456:
	add sp, sp, #20
	pop {r4, r5, r6, r7, r10, fp, lr}
	bx lr
.L457:
	add sp, sp, #20
	pop {r4, r5, r6, r7, r10, fp, lr}
	bx lr
.L458:
	b .L457
.L460:
	add sp, sp, #20
	pop {r4, r5, r6, r7, r10, fp, lr}
	bx lr
.L461:
	add sp, sp, #20
	pop {r4, r5, r6, r7, r10, fp, lr}
	bx lr
.L462:
	b .L451
.L466:
	ldr r4, [fp, #-4]
	cmp r4, #0
	ldr r5, [fp, #-12]
	cmp r5, #0
	cmp r4, r5
	movlt r4, #1
	movgt r4, #0
	blt .L467
	b .L479
.L467:
	mov r0, #32
	bl putch
	ldr r4, [fp, #-20]
	ldr r5, [fp, #-8]
	mov r6, #4
	mul r7, r5, r6
	add r5, r4, r7
	ldr r4, [r5]
	mov r0, r4
	bl putfloat
	ldr r4, [fp, #-4]
	ldr r5, =1
	add r6, r4, r5
	str r6, [fp, #-4]
	b .L466
.L468:
	mov r0, #10
	bl putch
	ldr r4, [fp, #-8]
	ldr r5, =1
	add r6, r4, r5
	str r6, [fp, #-8]
	b .L449
.L469:
	add sp, sp, #20
	pop {r4, r5, r6, r7, r10, fp, lr}
	bx lr
.L470:
	add sp, sp, #20
	pop {r4, r5, r6, r7, r10, fp, lr}
	bx lr
.L471:
	b .L470
.L473:
	add sp, sp, #20
	pop {r4, r5, r6, r7, r10, fp, lr}
	bx lr
.L474:
	add sp, sp, #20
	pop {r4, r5, r6, r7, r10, fp, lr}
	bx lr
.L475:
	b .L474
.L477:
	add sp, sp, #20
	pop {r4, r5, r6, r7, r10, fp, lr}
	bx lr
.L478:
	add sp, sp, #20
	pop {r4, r5, r6, r7, r10, fp, lr}
	bx lr
.L479:
	b .L468

	.global dct
	.type dct , %function
dct:
	push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	mov fp, sp
	sub sp, sp, #32
.L482:
	str r0, [fp, #-32]
	str r1, [fp, #-28]
	str r2, [fp, #-24]
	str r3, [fp, #-20]
	ldr r10, =0
	str r10, [fp, #-16]
	b .L488
.L488:
	ldr r4, [fp, #-16]
	cmp r4, #0
	ldr r5, [fp, #-24]
	cmp r5, #0
	cmp r4, r5
	movlt r4, #1
	movgt r4, #0
	blt .L489
	b .L501
.L489:
	ldr r4, =0
	str r4, [fp, #-12]
	b .L503
.L490:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L491:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L492:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L493:
	b .L492
.L495:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L496:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L497:
	b .L496
.L499:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L500:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L501:
	b .L490
.L503:
	ldr r4, [fp, #-12]
	cmp r4, #0
	ldr r5, [fp, #-20]
	cmp r5, #0
	cmp r4, r5
	movlt r4, #1
	movgt r4, #0
	blt .L504
	b .L516
.L504:
	ldr r4, [fp, #-32]
	ldr r5, [fp, #-16]
	mov r7, #4
	mul r6, r5, r7
	add r5, r4, r6
	ldr r4, =0
	str r4, [r5]
	ldr r4, =0
	str r4, [fp, #-8]
	b .L519
.L505:
	ldr r4, [fp, #-16]
	ldr r5, =1
	add r6, r4, r5
	str r6, [fp, #-16]
	b .L488
.L506:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L507:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L508:
	b .L507
.L510:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L511:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L512:
	b .L511
.L514:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L515:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L516:
	b .L505
.L519:
	ldr r4, [fp, #-8]
	cmp r4, #0
	ldr r5, [fp, #-24]
	cmp r5, #0
	cmp r4, r5
	movlt r4, #1
	movgt r4, #0
	blt .L520
	b .L532
.L520:
	ldr r4, =0
	str r4, [fp, #-4]
	b .L534
.L521:
	ldr r4, [fp, #-12]
	ldr r5, =1
	add r6, r4, r5
	str r6, [fp, #-12]
	b .L503
.L522:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L523:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L524:
	b .L523
.L526:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L527:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L528:
	b .L527
.L530:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L531:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L532:
	b .L521
.L534:
	ldr r4, [fp, #-4]
	cmp r4, #0
	ldr r5, [fp, #-20]
	cmp r5, #0
	cmp r4, r5
	movlt r4, #1
	movgt r4, #0
	blt .L535
	b .L547
.L535:
	ldr r4, [fp, #-32]
	ldr r5, [fp, #-16]
	mov r7, #4
	mul r6, r5, r7
	add r5, r4, r6
	ldr r4, [r5]
	ldr r5, [fp, #-28]
	ldr r6, [fp, #-8]
	mov r7, #4
	mul r8, r6, r7
	add r6, r5, r8
	ldr r5, [r6]
	ldr r6, addr_PI0
	ldr r7, [r6]
	ldr r6, [fp, #-24]
	sdiv r8, r7, r6
	ldr r6, [fp, #-8]
	ldr r7, =1
	ldr r9, =2
	sdiv r10, r7, r9
	add r7, r6, r10
	mul r6, r8, r7
	ldr r7, [fp, #-16]
	mul r8, r6, r7
	mov r0, r8
	bl my_cos
	mov r6, r0
	mul r7, r5, r6
	ldr r5, addr_PI0
	ldr r6, [r5]
	ldr r5, [fp, #-20]
	sdiv r8, r6, r5
	ldr r5, [fp, #-4]
	ldr r6, =1
	ldr r9, =2
	sdiv r10, r6, r9
	add r6, r5, r10
	mul r5, r8, r6
	ldr r6, [fp, #-12]
	mul r8, r5, r6
	mov r0, r8
	bl my_cos
	mov r5, r0
	mul r6, r7, r5
	add r5, r4, r6
	ldr r4, [fp, #-32]
	ldr r6, [fp, #-16]
	mov r7, #4
	mul r8, r6, r7
	add r6, r4, r8
	str r5, [r6]
	ldr r4, [fp, #-4]
	ldr r5, =1
	add r6, r4, r5
	str r6, [fp, #-4]
	b .L534
	b .F0
.LTORG
addr_MAX_DIM_X0:
	.word MAX_DIM_X
addr_MAX_DIM_Y0:
	.word MAX_DIM_Y
addr_test_block0:
	.word test_block
addr_test_dct0:
	.word test_dct
addr_test_idct0:
	.word test_idct
addr_PI0:
	.word PI
addr_TWO_PI0:
	.word TWO_PI
addr_EPSILON0:
	.word EPSILON
.F0:
.L536:
	ldr r4, [fp, #-8]
	ldr r5, =1
	add r6, r4, r5
	str r6, [fp, #-8]
	b .L519
.L537:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L538:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L539:
	b .L538
.L541:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L542:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L543:
	b .L542
.L545:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L546:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L547:
	b .L536

	.global idct
	.type idct , %function
idct:
	push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	mov fp, sp
	sub sp, sp, #32
.L553:
	str r0, [fp, #-32]
	str r1, [fp, #-28]
	str r2, [fp, #-24]
	str r3, [fp, #-20]
	ldr r10, =0
	str r10, [fp, #-16]
	b .L559
.L559:
	ldr r4, [fp, #-16]
	cmp r4, #0
	ldr r5, [fp, #-24]
	cmp r5, #0
	cmp r4, r5
	movlt r4, #1
	movgt r4, #0
	blt .L560
	b .L572
.L560:
	ldr r4, =0
	str r4, [fp, #-12]
	b .L574
.L561:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L562:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L563:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L564:
	b .L563
.L566:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L567:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L568:
	b .L567
.L570:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L571:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L572:
	b .L561
.L574:
	ldr r4, [fp, #-12]
	cmp r4, #0
	ldr r5, [fp, #-20]
	cmp r5, #0
	cmp r4, r5
	movlt r4, #1
	movgt r4, #0
	blt .L575
	b .L587
.L575:
	ldr r4, =1
	ldr r5, =4
	sdiv r6, r4, r5
	ldr r4, [fp, #-28]
	mov r5, #0
	mov r8, #4
	mul r7, r5, r8
	add r5, r4, r7
	ldr r4, [r5]
	mul r5, r6, r4
	ldr r4, [fp, #-32]
	ldr r6, [fp, #-16]
	mov r7, #4
	mul r8, r6, r7
	add r6, r4, r8
	str r5, [r6]
	ldr r4, =1
	str r4, [fp, #-8]
	b .L593
.L576:
	ldr r4, [fp, #-16]
	ldr r5, =1
	add r6, r4, r5
	str r6, [fp, #-16]
	b .L559
.L577:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L578:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L579:
	b .L578
.L581:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L582:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L583:
	b .L582
.L585:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L586:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L587:
	b .L576
.L593:
	ldr r4, [fp, #-8]
	cmp r4, #0
	ldr r5, [fp, #-24]
	cmp r5, #0
	cmp r4, r5
	movlt r4, #1
	movgt r4, #0
	blt .L594
	b .L606
.L594:
	ldr r4, [fp, #-32]
	ldr r5, [fp, #-16]
	mov r6, #4
	mul r7, r5, r6
	add r5, r4, r7
	ldr r4, [r5]
	ldr r5, =1
	ldr r6, =2
	sdiv r7, r5, r6
	ldr r5, [fp, #-28]
	ldr r6, [fp, #-8]
	mov r9, #4
	mul r8, r6, r9
	add r6, r5, r8
	ldr r5, [r6]
	mul r6, r7, r5
	add r5, r4, r6
	ldr r4, [fp, #-32]
	ldr r6, [fp, #-16]
	mov r7, #4
	mul r8, r6, r7
	add r6, r4, r8
	str r5, [r6]
	ldr r4, [fp, #-8]
	ldr r5, =1
	add r6, r4, r5
	str r6, [fp, #-8]
	b .L593
.L595:
	ldr r4, =1
	str r4, [fp, #-4]
	b .L612
.L596:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L597:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L598:
	b .L597
.L600:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L601:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L602:
	b .L601
.L604:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L605:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L606:
	b .L595
.L612:
	ldr r4, [fp, #-4]
	cmp r4, #0
	ldr r5, [fp, #-20]
	cmp r5, #0
	cmp r4, r5
	movlt r4, #1
	movgt r4, #0
	blt .L613
	b .L625
.L613:
	ldr r4, [fp, #-32]
	ldr r5, [fp, #-16]
	mov r7, #4
	mul r6, r5, r7
	add r5, r4, r6
	ldr r4, [r5]
	ldr r5, =1
	ldr r6, =2
	sdiv r7, r5, r6
	ldr r5, [fp, #-28]
	mov r6, #0
	mov r9, #4
	mul r8, r6, r9
	add r6, r5, r8
	ldr r5, [r6]
	mul r6, r7, r5
	add r5, r4, r6
	ldr r4, [fp, #-32]
	ldr r6, [fp, #-16]
	mov r7, #4
	mul r8, r6, r7
	add r6, r4, r8
	str r5, [r6]
	ldr r4, [fp, #-4]
	ldr r5, =1
	add r6, r4, r5
	str r6, [fp, #-4]
	b .L612
	b .F1
.LTORG
addr_MAX_DIM_X1:
	.word MAX_DIM_X
addr_MAX_DIM_Y1:
	.word MAX_DIM_Y
addr_test_block1:
	.word test_block
addr_test_dct1:
	.word test_dct
addr_test_idct1:
	.word test_idct
addr_PI1:
	.word PI
addr_TWO_PI1:
	.word TWO_PI
addr_EPSILON1:
	.word EPSILON
.F1:
.L614:
	ldr r4, =1
	str r4, [fp, #-8]
	b .L631
.L615:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L616:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L617:
	b .L616
.L619:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L620:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L621:
	b .L620
.L623:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L624:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L625:
	b .L614
.L631:
	ldr r4, [fp, #-8]
	cmp r4, #0
	ldr r5, [fp, #-24]
	cmp r5, #0
	cmp r4, r5
	movlt r4, #1
	movgt r4, #0
	blt .L632
	b .L644
.L632:
	ldr r4, =1
	str r4, [fp, #-4]
	b .L645
.L633:
	ldr r4, [fp, #-32]
	ldr r5, [fp, #-16]
	mov r6, #4
	mul r7, r5, r6
	add r5, r4, r7
	ldr r4, [r5]
	ldr r5, =2
	mul r6, r4, r5
	ldr r4, [fp, #-24]
	sdiv r5, r6, r4
	ldr r4, =2
	mul r6, r5, r4
	ldr r4, [fp, #-20]
	sdiv r5, r6, r4
	ldr r4, [fp, #-32]
	ldr r6, [fp, #-16]
	mov r7, #4
	mul r8, r6, r7
	add r6, r4, r8
	str r5, [r6]
	ldr r4, [fp, #-12]
	ldr r5, =1
	add r6, r4, r5
	str r6, [fp, #-12]
	b .L574
.L634:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L635:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L636:
	b .L635
.L638:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L639:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L640:
	b .L639
.L642:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L643:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L644:
	b .L633
.L645:
	ldr r4, [fp, #-4]
	cmp r4, #0
	ldr r5, [fp, #-20]
	cmp r5, #0
	cmp r4, r5
	movlt r4, #1
	movgt r4, #0
	blt .L646
	b .L658
.L646:
	ldr r4, [fp, #-32]
	ldr r5, [fp, #-16]
	mov r6, #4
	mul r7, r5, r6
	add r5, r4, r7
	ldr r4, [r5]
	ldr r5, [fp, #-28]
	ldr r6, [fp, #-8]
	mov r8, #4
	mul r7, r6, r8
	add r6, r5, r7
	ldr r5, [r6]
	ldr r6, addr_PI2
	ldr r7, [r6]
	ldr r6, [fp, #-24]
	sdiv r8, r7, r6
	ldr r6, [fp, #-16]
	ldr r7, =1
	ldr r9, =2
	sdiv r10, r7, r9
	add r7, r6, r10
	mul r6, r8, r7
	ldr r7, [fp, #-8]
	mul r8, r6, r7
	mov r0, r8
	bl my_cos
	mov r6, r0
	mul r7, r5, r6
	ldr r5, addr_PI2
	ldr r6, [r5]
	ldr r5, [fp, #-20]
	sdiv r8, r6, r5
	ldr r5, [fp, #-12]
	ldr r6, =1
	ldr r9, =2
	sdiv r10, r6, r9
	add r6, r5, r10
	mul r5, r8, r6
	ldr r6, [fp, #-4]
	mul r8, r5, r6
	mov r0, r8
	bl my_cos
	mov r5, r0
	mul r6, r7, r5
	add r5, r4, r6
	ldr r4, [fp, #-32]
	ldr r6, [fp, #-16]
	mov r7, #4
	mul r8, r6, r7
	add r6, r4, r8
	str r5, [r6]
	ldr r4, [fp, #-4]
	ldr r5, =1
	add r6, r4, r5
	str r6, [fp, #-4]
	b .L645
.L647:
	ldr r4, [fp, #-8]
	ldr r5, =1
	add r6, r4, r5
	str r6, [fp, #-8]
	b .L631
.L648:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L649:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L650:
	b .L649
.L652:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L653:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L654:
	b .L653
.L656:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L657:
	add sp, sp, #32
	pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
	bx lr
.L658:
	b .L647

	.global main
	.type main , %function
main:
	push {r4, r5, r6, r7, r8, r10, fp, lr}
	mov fp, sp
	sub sp, sp, #16
.L667:
	bl getint
	mov r10, r0
	str r10, [fp, #-16]
	bl getint
	mov r4, r0
	str r4, [fp, #-12]
	ldr r4, =0
	str r4, [fp, #-8]
	b .L671
.L671:
	ldr r4, [fp, #-8]
	cmp r4, #0
	ldr r5, [fp, #-16]
	cmp r5, #0
	cmp r4, r5
	movlt r4, #1
	movgt r4, #0
	blt .L672
	b .L684
.L672:
	ldr r4, =0
	str r4, [fp, #-4]
	b .L686
.L673:
	mov r4, #0
	ldr r5, addr_test_dct2
	mov r7, #32
	mul r6, r4, r7
	add r4, r5, r6
	mov r5, r4
	mov r4, #0
	ldr r6, addr_test_block2
	mov r8, #32
	mul r7, r4, r8
	add r4, r6, r7
	mov r6, r4
	ldr r4, [fp, #-16]
	ldr r7, [fp, #-12]
	mov r0, r5
	mov r1, r6
	mov r2, r4
	mov r3, r7
	bl dct
	mov r4, #0
	ldr r5, addr_test_dct2
	mov r6, #32
	mul r7, r4, r6
	add r4, r5, r7
	mov r5, r4
	ldr r4, [fp, #-16]
	ldr r6, [fp, #-12]
	mov r0, r5
	mov r1, r4
	mov r2, r6
	bl write_mat
	mov r4, #0
	ldr r5, addr_test_idct2
	mov r6, #32
	mul r7, r4, r6
	add r4, r5, r7
	mov r5, r4
	mov r4, #0
	ldr r6, addr_test_dct2
	mov r7, #32
	mul r8, r4, r7
	add r4, r6, r8
	mov r6, r4
	ldr r4, [fp, #-16]
	ldr r7, [fp, #-12]
	mov r0, r5
	mov r1, r6
	mov r2, r4
	mov r3, r7
	bl idct
	mov r4, #0
	ldr r5, addr_test_idct2
	mov r6, #32
	mul r7, r4, r6
	add r4, r5, r7
	mov r5, r4
	ldr r4, [fp, #-16]
	ldr r6, [fp, #-12]
	mov r0, r5
	mov r1, r4
	mov r2, r6
	bl write_mat
	mov r0, #0
	add sp, sp, #16
	pop {r4, r5, r6, r7, r8, r10, fp, lr}
	bx lr
.L675:
	mov r0, #0
	add sp, sp, #16
	pop {r4, r5, r6, r7, r8, r10, fp, lr}
	bx lr
.L676:
	b .L675
.L679:
	mov r0, #0
	add sp, sp, #16
	pop {r4, r5, r6, r7, r8, r10, fp, lr}
	bx lr
.L680:
	b .L679
.L684:
	b .L673
.L686:
	ldr r4, [fp, #-4]
	cmp r4, #0
	ldr r5, [fp, #-12]
	cmp r5, #0
	cmp r4, r5
	movlt r4, #1
	movgt r4, #0
	blt .L687
	b .L699
.L687:
	bl getfloat
	mov r4, r0
	ldr r5, [fp, #-8]
	ldr r6, addr_test_block2
	mov r7, #32
	mul r8, r5, r7
	add r5, r6, r8
	mov r6, r5
	ldr r5, [fp, #-4]
	mov r7, #4
	mul r8, r5, r7
	add r5, r6, r8
	str r4, [r5]
	ldr r4, [fp, #-4]
	ldr r5, =1
	add r6, r4, r5
	str r6, [fp, #-4]
	b .L686
.L688:
	ldr r4, [fp, #-8]
	ldr r5, =1
	add r6, r4, r5
	str r6, [fp, #-8]
	b .L671
.L690:
	mov r0, #0
	add sp, sp, #16
	pop {r4, r5, r6, r7, r8, r10, fp, lr}
	bx lr
.L691:
	b .L690
.L694:
	mov r0, #0
	add sp, sp, #16
	pop {r4, r5, r6, r7, r8, r10, fp, lr}
	bx lr
.L695:
	b .L694
.L699:
	b .L688

addr_MAX_DIM_X2:
	.word MAX_DIM_X
addr_MAX_DIM_Y2:
	.word MAX_DIM_Y
addr_test_block2:
	.word test_block
addr_test_dct2:
	.word test_dct
addr_test_idct2:
	.word test_idct
addr_PI2:
	.word PI
addr_TWO_PI2:
	.word TWO_PI
addr_EPSILON2:
	.word EPSILON
